Sicherheitshinweise
Tipp
Für umfassende Informationen zum Thema Security in der CODESYS-Umgebung siehe: Security
Entwicklung eines HTML5-Steuerelements
Es ist nicht möglich, beliebige Datenmengen, die bei großen Arrays auftreten können, zu übertragen. In diesem Fall ist es hilfreich, das Array mit ScrollRange-Funktionalität anzubinden. Das ermöglicht auch eine bessere Übertragungsperformance, weil nur der tatsächlich benötigte Ausschnitt übertragen wird.
Editortyp:
ArrayRange
Eigenschaftentyp: Aktualisieren
Variablentyp: Basistyp des Arrays
Konfigurieren Sie deshalb das HTML5-Steuerelement mit einer Schnittstelleneigenschaft für das Array folgendermaßen:
Verwendung eines HTML5-Steuerelements
Wichtig
Aus Sicherheitsgründen ist beim Verwenden von HTML5-Steuerelemente zu beachten, dass es durch die darin enthaltene Funktionalität zu unerwünschten Angriffen kommen kann. Infolgedessen kann der Betrieb einer SPS Schaden nehmen.
Ausführen von DoS-Attacken auf den Webservern
Ausspähen von Werten, die an HTML5-Steuerelementen konfiguriert werden
Anzeigen falscher Werte aus der Applikation
Senden falscher Werte an die Applikation
Beispiele dafür sind:
Für einen wirksamen Schutz ist es erforderlich, dass die unten stehenden Maßnahmen zur Absicherung ergriffen werden.
Prüfen von Autor und Inhalt
Verwenden Sie nur HTML5-Steuerelemente von vertrauenswürdigen Autoren.
Zur Vermeidung unerwarteter (und möglicherweise bösartiger) Veränderungen von HTML5-Steuerelementen bietet CODESYS eine Unterstützung an. Verwendete HTML5-Steuerelemente können beim Übersetzen oder beim Download auf Veränderungen geprüft werden und müssen dafür initial in Projekten bestätigt werden. Über den Inhalt dieser HTML5-Steuerelemente wird eine Prüfsumme (= Hashwert) berechnet. Autoren von HTML5-Steuerelementen können Ihre Hashwerte zum Vergleich mit bereitstellen.
Sicheres Protokoll HTTPS
Verwenden Sie HTTPS.
Mit HTML5-Steuerelementen werden zusätzlich zu Zeichenanweisungen und Eingabeereignissen wie Mausklicks nun auch Werte übertragen, die aus IEC-Variablen gelesen oder in diese geschrieben werden. Dies könnte Man-in-the-Middle-Attacken erleichtern.
Zugriff auf Ressourcen
Standardmäßig kann ein HTML5-Steuerelement keine Ressourcen wie beispielsweise Skripte oder Stile laden. Ausgenommen davon sind aber die Ressourcen, die mit dem Element selbst bereitgestellt werden. Wenn dabei das Laden von Inhalten von anderen Servern als der Steuerung notwendig wird, kann dieser Vorgang durch Anpassung der Einstellung ContentSecurityPolicyIncludeTrustedOrigins
in der automatisch generierten Datei webvisu.cfg.json
entschärft werden.
Dies ist jedoch aus den folgenden Gründen nicht empfehlenswert:
Auch alle weiteren HTML5-Steuerelemente dürfen dann Inhalte von diesen erlaubten Orten herunterladen und verwenden.
Basic Level hat keine Kontrolle über die von externen Servern geladenen Ressourcen, so dass die Verfügbarkeit und Kompatibilität nicht garantiert werden kann.
Externe Server könnten schadhafte Skripte bereitstellen, die dann als Teil des HTML5-Steuerelements ausgeführt werden könnten. Ein schadhaftes Skript könnte zum Beispiel empfangene oder gesendete Werte verändern oder Informationen preisgeben.
Dateimanipulation
Seien Sie vorsichtig, wenn die Applikation HTML5-Steuerelemente zusammen mit der Möglichkeit verwendet, Dateien zu modifizieren. Bei Dateimanipulationen könnten böswillige Anwender in der Lage sein, schadhaften Code in HTML5-Steuerelemente einzufügen. Das ist beispielsweise bei der Verwendung des Texteditors der Visualisierung oder bei Funktionen wie SysFile
zu befürchten.
Es liegt in der Verantwortung des Applikationsentwicklers, dass Dateipfade, die zur Modifikation verwendet werden, auf gültige Speicherorte geprüft werden (beispielsweise nicht in den Ordnern
$PlcLogic$/$visu$
). Dies ist besonders gefährlich, wenn der Benutzer der Visualisierung den Pfad für eine zu ändernde Datei frei eingeben kann.Es ist ratsam, nur fest kodierte Pfade zu verwenden. Alternativ können Sie überprüfen, ob ein vom Benutzer eingegebener Pfad an seinem erwarteten Speicherort liegt.